package xmpp.androidpush.service;


import org.jivesoftware.smack.packet.IqMessage;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;

import xmpp.androidpush.aidl.PushListener.PushCallback;
import xmpp.androidpush.util.ConnectionState;

public interface Smackable {

	boolean doConnect() throws PushException;

	boolean isAuthenticated();

	void requestConnectionState(ConnectionState state);

	ConnectionState getConnectionState();

	String getLastError();

	void sendMessage(Message message);

	void sendIqMessage(String message);

	void sendServerPing();

	void sendPresence(Presence presence);

	void registerCallback(PushCallback callback);

	void unregisterCallback();

	void setStatusFromConfig(Presence.Mode mode);

	XmppStreamHandler.ExtXMPPConnection getConnection();
}
